﻿Imports System.IO

Module ModuleMetodos
#Region "Métodos generales"
    Private Function leerLineaN(ByVal fileAndPath As String, ByVal lineNumber As Integer) As String
        Dim nthLine As String = Nothing
        Dim n As Integer
        Try
            Using sr As StreamReader = New StreamReader(fileAndPath)
                n = 0
                Do While (sr.Peek() >= 0) And (n < lineNumber)
                    sr.ReadLine()
                    n += 1
                Loop
                If sr.Peek() >= 0 Then
                    nthLine = sr.ReadLine()
                End If
            End Using
        Catch ex As Exception
            Throw
        End Try
        Return nthLine
    End Function
#End Region
    Public Function verificarPassword(ByVal passwordIntroducido As String) As Boolean
        'la ruta en vez de pasarla como argumento, mejor la definimos como constante en un modulo o whatever
        'buscar usuario en archivo
        Dim passwordReal As String = FormularioLogeo.getUsuarioAccediendo().getPassword()

        'comparar passwords
        If passwordReal = passwordIntroducido Then
            Return True
        Else
            Return False
        End If
        'si coinciden, cerrar formulario, abrir Formulario y anotar acceso en log
        'si admin, montar menu admin
        'si no coinciden, lanzar excepcion y anotar en log
        'Throw New System.Exception
        '(Cambiar la Exception a un tipo predefinido por nosotros)
    End Function

    Public Function buscarEmpleado(ByVal usuarioEmpleado As String) As Empleado
        FileOpen(1, getRutaDatosLogueo(), OpenMode.Input)
        Dim usuario As String = ""
        Dim linea As String = ""
        Dim nombre As String = ""
        Dim empleado As Empleado = Nothing
        Dim permiso As Boolean

        For i As Integer = 0 To getNumeroEmpleados() - 1
            Input(1, linea)
            usuario = Split(linea, ";")(0) 'el usuario está almacenado en el primer campo de los registros
            nombre = buscarNombreEmpleado(usuario)
            permiso = buscarPermisoEmpleado(usuario)
            If usuarioEmpleado.Equals(usuario) Then
                empleado = New Empleado(nombre, usuario, permiso)
            End If
        Next
        FileClose(1)
        Return empleado
        ''devuelve la línea en la que está el empleado
        'MsgBox(rutaDatosEmpleados)
        'FileOpen(2, rutaDatosEmpleados, OpenMode.Input)
        'Dim usuario As String = ""
        'Dim linea As String = ""
        'Dim nombre As String = ""
        'Dim empleado As Empleado = Nothing
        'Dim password As String = ""
        'Dim campos() As String
        'For i As Integer = 0 To getNumeroEmpleados() - 1
        '    Input(2, linea)
        '    campos = Split(linea, ";")
        '    usuario = campos(INDEX_USUARIO_EMPLEADO) 'el usuario está almacenado en el primer campo de los registros
        '    nombre = buscarNombreEmpleado(usuario)
        '    If usuarioEmpleado.Equals(usuario) Then
        '        empleado = New Empleado(nombre, usuario)
        '        empleado.setPassword(campos(INDEX_PASSWORD_EMPLEADO))
        '    End If
        'Next
        'FileClose(2)
        'Return empleado
    End Function

    Public Function buscarNombreEmpleado(ByVal usuario As String) As String
        Try
            FileOpen(2, getRutaDatosEmpleados(), OpenMode.Input)
        Catch
            'escribimos a errores.
        End Try
        Dim linea As String = ""
        Dim usuarioAux As String = ""
        For i As Integer = 0 To getNumeroEmpleados() - 2
            Input(2, linea)
            usuarioAux = Split(linea, ";")(1)
            If usuario.Equals(usuarioAux) Then
                FileClose(2)
                Return Split(linea, ";")(2)
            End If
        Next
        FileClose(2)
        Return ""
    End Function

    Public Function buscarPermisoEmpleado(ByVal usuario As String) As Boolean
        Try
            FileOpen(2, getRutaDatosEmpleados(), OpenMode.Input)
        Catch
            'escribimos a errores.
        End Try
        Dim linea As String = ""
        Dim usuarioAux As String = ""
        For i As Integer = 0 To getNumeroEmpleados() - 1
            Input(2, linea)
            usuarioAux = Split(linea, ";")(1)
            If usuario.Equals(usuarioAux) Then
                FileClose(2)
                Return Split(linea, ";")(3)
            End If
        Next
        FileClose(2)
        Return ""
    End Function

    Public Sub validarPasswordAntiguo(ByVal campo1 As String, ByVal campo2 As String)
        'si coinciden y es la contraseña correcta, sobreescribir contrseña
        'si no, coinciden, alertar al usuario sin penalizarle como acceso fraudulento
        'si coinciden pero no es la contraseña correcta, Exception!!
    End Sub

    'MOVIDAS CON LOS TICKETS
    Public Sub modificarServicioTicket(ByVal servicio As Servicio, ByVal unidades As Integer)

    End Sub

End Module
